91 research outputs found

    Reusable roles, a test with patterns

    Get PDF
    Although roles have been around for a long time they have not yet reached mainstream programming languages. The variety of existing role models may be a limiting factor. We believe that for roles to be widely accepted they must enhance code reuse. An outcome would be a library of roles. We present and discuss what we feel are the characteristics that a role model must have to enable reusable and player independent roles. In this paper we present our role model and JavaStage, a role language that extends Java, with examples of reusable roles. Finally, we present our steps towards the building of a role library, by presenting the roles developed from the analysis of the GoF Design Patterns. The results obtained, we developed roles for 10 of the 23 GoF patterns, are promising

    Roles as modular units of composition

    Get PDF
    Object oriented decomposition is the most successful decomposition strategy used nowadays. But a single decomposition strategy cannot capture all aspects of a concept. Roles have been successfully used to model the different views a concept may provide but, despite this, roles have not been used as building blocks. Roles are mostly used to extend objects at runtime. In this paper we propose roles as a way to compose classes that provides a modular way of capturing and reusing those aspects that fall outside a concept’s main purpose, while being close to the OO approach. We present how roles can be made modular and reusable. We also show how we can use roles to compose classes using JavaStage, a java extension that support roles To validate our approach we developed generic and reusable roles for the Gang of Four patterns. We were able to develop reusable roles for 10 out of 23 patterns, which is a good outcome

    Modeling crosscutting concerns with roles

    Get PDF
    Modularization allows the development of independent modules and their reuse. However a single decomposition strategy cannot neatly capture all the systems concerns. Thus some concerns are spread over several modules – the crosscutting concerns. To cope with this we need to have other class composition techniques than those available in traditional Object Oriented programming languages. One of such compositions is roles. If roles are used to compose classes and if a role models a crosscutting concern, then the concern is limited to the role and not spread over several classes. To validate this approach we conducted a case study. In the case study crosscutting concerns were identified in a system using a clone detection tool and roles were developed to model those crosscutting concerns. Results show that this approach reduces significantly the spreading of crosscutting concerns code

    Towards detecting and solving aspect conflicts and interferences using unit tests

    Get PDF
    Aspect Oriented Programming (AOP) is a programming paradigm that aims at solving the problem of crosscutting concerns being normally scattered throughout several units of an application.Although an important step forward in the search for modularity, by breaking the notion of encapsulation introduced by Object Oriented Programming (OOP), AOP has proven to be prone to numerous problems caused by conflicts and interferences between aspects.This paper presents work that explores the proven unit testing techniques as a mean to help developers describe the behavior of their aspects and to advise them about possible conflicts and interferences

    Modeling and programming with roles: introducing JavaStage

    Get PDF
    Roles are not a new concept, but they have been used in two different ways: as modeling concepts in a static view and as instance extensions in a dynamic view. For these views only the dynamic offers supporting languages. The static view, although proving the utility of roles in modeling, does not offer a programming language that allows developers to use roles all the way from modeling to programming. We try to overcome this by presenting our role language JavaStage, based on the Java language. We do this by designing and implementing a simple framework and then compare the results with its OO equivalent. Our results show that static roles are in fact useful when used in code and that JavaStage features expand role reuse

    Incremental modular testing for AOP

    Get PDF
    By designing systems as sets of modules that can be composed into larger applications, developers unleasha multitude of advantages. The promise of AOP (Aspect-Oriented Programming) is to enable developers toorganize crosscutting concerns into separate units of modularity making it easier to accomplish this vision.However, AOP does not allow unit tests to be untangled, which impairs the development of properly testedindependent modules. This paper presents a technique that enables developers to encapsulate crosscuttingconcerns using AOP and still be able to develop reusable unit tests. Our approach uses incremental testingand invasive aspects to modify and adapt tests. The approach was evaluated in a medium scale project withpromising results. Without using the proposed technique, due to the presence of invasive aspects, some unittests would have to be discarded or modified to accommodate the changes made by them. This would havea profound impact on the overall modularity and, in particular, on the reusability of those modules. We willshow that this technique enables proper unit tests that can be reused even when coupled with aspect-orientedcode

    Empirical Evaluation of a Live Environment for Extract Method Refactoring

    Full text link
    Complex software can be hard to read, adapt, and maintain. Refactoring it can create cleaner and self-explanatory code. Refactoring tools try to guide developers towards better code, with more quality. However, most of them take too long to provide feedback, support, and guidance on how developers should improve their software. To reduce this problem, we explored the concept of Live Refactoring, focusing on visually suggesting and applying refactorings, in real-time. With this in mind, we developed a Live Refactoring Environment that visually identifies, recommends, and applies Extract Method refactorings. To validate it, we conducted an empirical experiment. Early results showed that our approach improved several code quality metrics. Besides, we also concluded that our results were significantly different and better than the ones from refactoring the code manually without further help

    Analysing tactics in architectural patterns

    Get PDF
    We present an approach to analyse the application of tactics in architectural patterns. We define and illustrate the approach by resorting to Archery, a language for specifying, analysing and verifying architectural patterns. The approach consists of characterising the design principles of an architectural pattern as constraints, expressed in the language, and then, establishing a refinement relation based on their satisfaction. The application of tactics preserving refinement preserves the original design principles expressed themselves as constraints for the architectural pattern. The paper’s focus on fault-tolerance tactics, and identifies a set of requirements for a semantic framework characterising them. Model transformations to represent their application are discussed and illustrated through two case studies.FC

    EU3D - BOOSTING DIGITAL SKILLS AND COMPETENCES OF THIRD SECTOR ORGANISATIONS AND SOCIAL ENTERPRISES

    Get PDF
    EDEN's 2022 Research Workshop entitled "Towards smart and inclusive learning ecosystem" focuses on improved learning environments that drive the digital transformation of educational institutions. COVID-19 has accelerated the shift to blended or fully online learning environments, enforcing educational institutions to embrace technology and offer their students an online or at least blended learning experience. A large amount of data accessible through different learning environments has been analysed and used to drive future strategies of education. This workshop aims to explore the consequences of emergency remote teaching and learning as well as to tackle the new approaches in creating learning environments that should be smarter, more inclusive, involve emerging technologies that will boost digital skills of students and bring them more personalised experienc
    • …
    corecore